%%%-----------------------
%%% 1. America
%%%------------------------

clear all; clc;
load dataAm3.txt; 
N=22; k=2; opt=2; nsim=100; mmax=5;  
gdp=dataAm3(:,1:22); pop=dataAm3(:,23:44);
ter={dataAm3(:,45:66) dataAm3(:,67:88) dataAm3(:,89:110)};

resultsAm={};

for i = 1:3   % 1 = total ter; 2 == domestic ter; 3 == transnational ter;
        for j = 1:2 % 1 = ter/1000; 2 = ter/pop;
                for m=1:2 % 1 = level ter; 2 = 1st differenced ter;
                    [yy, ylag, tlag]=prepdat3(gdp, ter{i}, pop, j, m);
                    [T N]=size(yy);
                    xx = tlag;
                    [bfinal1 pval mpy1 mpx mpu1 converg1] = fapr1(yy, ylag, xx, opt, nsim, mmax, k, N);
             
                    resultsAm.beta{i,j,m} = bfinal1;
                    resultsAm.pval{i,j,m} = pval;
                    resultsAm.stat{i,j,m} = [mpy1 mpx mpu1 converg1];
                    %keep resultsAm dataAm3 k opt nsim mmax ter gdp pop i j m
                end
        end
end

keep resultsAm;


%%%------------------
%%% 2. Asia 
%%%--------------------

clc; load dataAs3.txt; 
k=2; opt=2; nsim=100; mmax=5;  
gdp={dataAs3(:,1:21) dataAs3(:,1:21) [dataAs3(:,1:9) dataAs3(:,11:21)]}; % drop Macau for iterate
pop={dataAs3(:,22:42) dataAs3(:,22:42) [dataAs3(:,22:30) dataAs3(:,32:42)]}; 
ter={dataAs3(:,43:63) dataAs3(:,64:84) [dataAs3(:,85:93) dataAs3(:,95:105)]};

resultsAs={};

for i = 1:3   % 1 = total ter; 2 == domestic ter; 3 == transnational ter;
        for j = 1:2 % 1 = ter/1000; 2 = ter/pop;
                for m=1:2 % 1 = level ter; 2 = 1st differenced ter;
                    [yy, ylag, tlag]=prepdat3(gdp{i}, ter{i}, pop{i}, j, m);
                    [T N]=size(yy);
                    xx = tlag;
                    [bfinal1 pval mpy1 mpx mpu1 converg1] = fapr1(yy, ylag, xx, opt, nsim, mmax, k, N);
             
                    resultsAs.beta{i,j,m} = bfinal1;
                    resultsAs.pval{i,j,m} = pval;
                    resultsAs.stat{i,j,m} = [mpy1 mpx mpu1 converg1];
                    %keep resultsAs dataAs3 k opt nsim mmax ter gdp pop i j m
                end
        end
end

keep resultsAm resultsAs;


%%%---------------------------------
%%% 3. Middle Eeast and North Africa
%%%----------------------------------

clc; load dataMe3.txt;  
k=2; opt=2; nsim=100; mmax=5;  
gdp={dataMe3(:,1:13) dataMe3(:,1:13) [dataMe3(:,1:9) dataMe3(:,11:13)]}; % drop Morocco for iterate
pop={dataMe3(:,14:26) dataMe3(:,14:26) [dataMe3(:,14:22) dataMe3(:,24:26)]}; 
ter={dataMe3(:,27:39) dataMe3(:,40:52) [dataMe3(:,53:61) dataMe3(:,63:65)]};

resultsMe={};

for i = 1:3   % 1 = total ter; 2 == domestic ter; 3 == transnational ter;
        for j = 1:2 % 1 = ter/1000; 2 = ter/pop;
                for m=1:2 % 1 = level ter; 2 = 1st differenced ter;
                    [yy, ylag, tlag]=prepdat3(gdp{i}, ter{i}, pop{i}, j, m);
                    [T N]=size(yy);
                    xx = tlag;
                    [bfinal1 pval mpy1 mpx mpu1 converg1] = fapr1(yy, ylag, xx, opt, nsim, mmax, k, N);
             
                    resultsMe.beta{i,j,m} = bfinal1;
                    resultsMe.pval{i,j,m} = pval;
                    resultsMe.stat{i,j,m} = [mpy1 mpx mpu1 converg1];
                    %keep resultsMe dataMe3 k opt nsim mmax ter gdp pop i j m
                end
        end
end

keep resultsAm resultsAs resultsMe;


%%%------------------------------
%%% 4. sub-Saharan Africa
%%%------------------------------

clc; load dataAf3.txt; 
k=2; opt=2; nsim=100; mmax=5;
gdp=dataAf3(:,1:24); pop=dataAf3(:,25:48);
ter={dataAf3(:,49:72) dataAf3(:,73:96) dataAf3(:,97:120)};

resultsAf={};

for i = 1:3   % 1 = total ter; 2 == domestic ter; 3 == transnational ter;
        for j = 1:2 % 1 = ter/1000; 2 = ter/pop;
                for m=1:2 % 1 = level ter; 2 = 1st differenced ter;
                    [yy, ylag, tlag]=prepdat3(gdp, ter{i}, pop, j, m);
                    [T N]=size(yy);
                    xx = tlag;
                    [bfinal1 pval mpy1 mpx mpu1 converg1] = fapr1(yy, ylag, xx, opt, nsim, mmax, k, N);
             
                    resultsAf.beta{i,j,m} = bfinal1;
                    resultsAf.pval{i,j,m} = pval;
                    resultsAf.stat{i,j,m} = [mpy1 mpx mpu1 converg1];
                    %keep resultsAf dataAf3 k opt nsim mmax ter gdp pop i j m
                end
        end
end

keep resultsAm resultsAs resultsMe resultsAf;


%%%--------------------------
%%% 5. Western Europe
%%%--------------------------

clc; load dataEu3.txt;  
k=2; opt=2; nsim=100; mmax=5;
% drop Iceland for GTD dom, and Finland for Iterate
gdp={dataEu3(:,1:19) [dataEu3(:,1:8) dataEu3(:,10:19)] [dataEu3(:,1:3) dataEu3(:,5:19)]};
pop={dataEu3(:,20:38) [dataEu3(:,20:27) dataEu3(:,29:38)] [dataEu3(:,20:22) dataEu3(:,24:38)]}; 
ter={dataEu3(:,39:57) [dataEu3(:,58:65) dataEu3(:,67:76)] [dataEu3(:,77:79) dataEu3(:,81:95)]};

resultsEu={};

for i = 1:3   % 1 = total ter; 2 == domestic ter; 3 == transnational ter;
        for j = 1:2 % 1 = ter/1000; 2 = ter/pop;
                for m=1:2 % 1 = level ter; 2 = 1st differenced ter;
                    [yy, ylag, tlag]=prepdat3(gdp{i}, ter{i}, pop{i}, j, m);
                    [T N]=size(yy);
                    xx = tlag;
                    [bfinal1 pval mpy1 mpx mpu1 converg1] = fapr1(yy, ylag, xx, opt, nsim, mmax, k, N);
             
                    resultsEu.beta{i,j,m} = bfinal1;
                    resultsEu.pval{i,j,m} = pval;
                    resultsEu.stat{i,j,m} = [mpy1 mpx mpu1 converg1];
                    %keep resultsEu dataEu3 k opt nsim mmax ter gdp pop i j m
                end
        end
end

keep resultsAm resultsAs resultsMe resultsAf resultsEu;



%%%%%-------------------------------------------------
%%%%%       RESULTS
%%%%%-------------------------------------------------


%%%% Results cell arrays are as follow:

%{1,1,1} = Total terrorism/1000 level
%{1,1,2} = Total terrorism/1000 first-differenced
%{1,2,1} = Total terrorism/pop level
%{1,2,2} = Total terrorism/pop first-differenced

%{2,1,1} = Domestic terrorism/1000 level
%{2,1,2} = Domestic terrorism/1000 first-differenced
%{2,2,1} = Domestic terrorism/pop level
%{2,2,2} = Domestic terrorism/pop first-differenced

%{3,1,1} = Transnat terrorism/1000 level
%{3,1,2} = Transnat terrorism/1000 first-differenced
%{3,2,1} = Transnat terrorism/pop level
%{3,2,2} = Transnat terrorism/pop first-differenced


%%%% Table 3: only results shown in Table 3

Table3_Am=[resultsAm.beta{1,1,1} resultsAm.beta{2,1,1} resultsAm.beta{3,1,1}; ...
    resultsAm.beta{1,2,1} resultsAm.beta{2,2,1} resultsAm.beta{3,2,1}; ... 
    resultsAm.beta{1,1,2} resultsAm.beta{2,1,2} resultsAm.beta{3,1,2}; ...
    resultsAm.beta{1,2,2} resultsAm.beta{2,2,2} resultsAm.beta{3,2,2}];

Table3_As=[resultsAs.beta{1,1,1} resultsAs.beta{2,1,1} resultsAs.beta{3,1,1}; ...
    resultsAs.beta{1,2,1} resultsAs.beta{2,2,1} resultsAs.beta{3,2,1}; ... 
    resultsAs.beta{1,1,2} resultsAs.beta{2,1,2} resultsAs.beta{3,1,2}; ...
    resultsAs.beta{1,2,2} resultsAs.beta{2,2,2} resultsAs.beta{3,2,2}];

Table3_Me=[resultsMe.beta{1,1,1} resultsMe.beta{2,1,1} resultsMe.beta{3,1,1}; ...
    resultsMe.beta{1,2,1} resultsMe.beta{2,2,1} resultsMe.beta{3,2,1}; ... 
    resultsMe.beta{1,1,2} resultsMe.beta{2,1,2} resultsMe.beta{3,1,2}; ...
    resultsMe.beta{1,2,2} resultsMe.beta{2,2,2} resultsMe.beta{3,2,2}];

Table3_Af=[resultsAf.beta{1,1,1} resultsAf.beta{2,1,1} resultsAf.beta{3,1,1}; ...
    resultsAf.beta{1,2,1} resultsAf.beta{2,2,1} resultsAf.beta{3,2,1}; ... 
    resultsAf.beta{1,1,2} resultsAf.beta{2,1,2} resultsAf.beta{3,1,2}; ...
    resultsAf.beta{1,2,2} resultsAf.beta{2,2,2} resultsAf.beta{3,2,2}];

Table3_Eu=[resultsEu.beta{1,1,1} resultsEu.beta{2,1,1} resultsEu.beta{3,1,1}; ...
    resultsEu.beta{1,2,1} resultsEu.beta{2,2,1} resultsEu.beta{3,2,1}; ... 
    resultsEu.beta{1,1,2} resultsEu.beta{2,1,2} resultsEu.beta{3,1,2}; ...
    resultsEu.beta{1,2,2} resultsEu.beta{2,2,2} resultsEu.beta{3,2,2}];

Table3_Level_TER1000=[Table3_Am(1,1:3) Table3_Am(2,1:3); Table3_As(1,1:3) Table3_As(2,1:3);...
    Table3_Me(1,1:3) Table3_Me(2,1:3); Table3_Af(1,1:3) Table3_Af(2,1:3);...
    Table3_Eu(1,1:3) Table3_Eu(2,1:3)]    
Table3_Level_TERPOP=[Table3_Am(3,1:3) Table3_Am(4,1:3); Table3_As(3,1:3) Table3_As(4,1:3); ...
    Table3_Me(3,1:3) Table3_Me(4,1:3); Table3_Af(3,1:3) Table3_Af(4,1:3); ...
    Table3_Eu(3,1:3) Table3_Eu(4,1:3)]

Table3_FD_TER1000=[Table3_Am(5,1:3) Table3_Am(6,1:3); Table3_As(5,1:3) Table3_As(6,1:3);...
    Table3_Me(5,1:3) Table3_Me(6,1:3); Table3_Af(5,1:3) Table3_Af(6,1:3);...
    Table3_Eu(5,1:3) Table3_Eu(6,1:3)]
Table3_FD_TERPOP=[Table3_Am(7,1:3) Table3_Am(8,1:3); Table3_As(7,1:3) Table3_As(8,1:3);...
    Table3_Me(7,1:3) Table3_Me(8,1:3); Table3_Af(7,1:3) Table3_Af(8,1:3);...
    Table3_Eu(7,1:3) Table3_Eu(8,1:3)]
    
    

